
Internet Protocol version 4 網際網路協定版本 4
| 作者 | AM |
|---|---|
| 進度 | 完成 |
| 週次 | 2021.03 Week 4 |
前言
你可能是一般用戶,你也可能沒聽過一堆亂七八糟的網路協定,但唯有一個你不能錯過
「Internet Protocol」
「Internet Protocol」
「Internet Protocol」
咳咳, 「Internet Protocol」,也就是網際網路協定,是網際網路協議套組的一部份,通常跟另一個協定 TCP 綁在一起合稱 TCP / IP,在網路系統當中擔任核心角色、維護著基礎結構的和平。
Internet Protocol 😀
「欸你遊戲伺服器的 IP 是多少」,遊戲玩家都知道的經典問句。
嚴格說起來那個東西叫做 IP 位址 ( IP Address )。在這廣大的網路系統當中,位址就好比你家的門牌,而在這一個網路協定當中位址只是他的一部份。除此之外,他還規定如何為你的網路資料做封裝,也就是做成封包。還有定址與基礎路由的工作
這個協定各個版本的規定不同,目前主流且已面市的有 IPv4 與 IPv6 兩種,將分別做介紹。
IPv4 網際網路協定版本 4
前幾個版本去哪了?基本上就是因為無法做為實際用途、或是純粹拿來實驗的
直到 IPv4 才被廣泛部署與使用。
位址 Address
IPv4 的位址是一個 32 位元長度的整數值。
而平時你應該會看到類似這樣的形式 192.168.1.1 ,稱為點分十進制。
把 32 個位元切成 4 份,用逗點隔開,每一份包含 8 個位元的資料並用十進制表示,也是目前最廣泛使用的表示方法,故不討論其他的表示方法。
遮罩與子網路 Mask & Subnet
當一個網路持有大量的 IP 位址時,在管理上是個非常大的問題,你那 500 元的 Router 的 Routing Table 肯定爆滿,效能也挺差的。而且你需要這麼多位址嗎?
因此透過切割網路來分組這些 IP 位址,分割出來的就稱子網路、網段,每個網段都可能持有不同數量的 IP 位址,是留了一個相當的彈性。
至於切割方式就是透過「遮罩」,使用遮罩來辨識你的裝置究竟在哪一個網段,所以知道哪一些 IP 位址資訊是你的裝置需要知道的。
遮罩與位址都是一個 32 位元的數值,有兩種表示方法:
( A ) 長度表示法。/n,例如 /8、/16、/24 ,也就是前 n 個都是 1。
( B ) 位址表示法。像是 255.255.255.0 這種形式。
這兩種是可以互換的,像是 255.255.255.0 轉換成二進址前面 24 個位元都是 1 ,所以在 ( A ) 表示方法就是 24,幹話。然後 8 要轉換成 ( B ) 表示法,也就是前 8 個位元都是 1,你會得到 127.0.0.0
得到遮罩之後,我們要將它與 IP 位址做 AND 運算,方可得到該網段,也能知道你的持有的 IP 在哪了。假設你有一 IP 位址 192.168.0.32 ,遮罩 /17,以下示範:
192.168.0.32 -> 11000000.10101000.00000000.00100000
/17 (255.255.128.0) -> 11111111.11111111.10000000.00000000
-----------------------------------------------------------
11000000.10101000.00000000.00000000
192.168.0.0 就是你的網段標識了。修但幾壘,網段標識是什麼,其實你分割出來的網段還要「去頭去尾」,網段首個 IP 位址就是你這個網段的標識,而最後一個叫做廣播位址。以上面的例子就是 192.168.0.0 與 192.168.127.255。
不知道怎麼證明 192.168.127.255 是該網段最後一個位址的,請動手算一次。
另外你可以知道的是,這一個網段被切割成了 2^(17 - 16) 段,每個網段包含 2 ^ (24 - 17) 個 IP 位址。攤牌了,記住 8、16、24,這幾個數字,都是 8 的倍數,恰好點分十進制每一段都是 8 個位元。
出個問題給你,請問 192.168.128.1 ,遮罩 /17 與剛才的位址是同個網段嗎?
192.168.128.1 -> 11000000.10101000.10000000.00000001
/17 (255.255.128.0) -> 11111111.11111111.10000000.00000000
-----------------------------------------------------------
11000000.10101000.10000000.00000000
192.168.128.0網段標識顯然不太一樣,證明不在同個網段的。
順帶一題你也可以用 IPv4位址/遮罩長度 來簡寫一個位址與網段關係。
保留位址 Reversed Address
Q:IPv4 的位址長度是 32,意思是有 2^32 個位址可用嗎?從 0.0.0.0 到 255.255.255.255?
A:說對一半,但是實際上能在廣域網路當中使用的會更少,除了每個網段「去頭去尾」之外,因為有些位址被保留下來做特殊用途的!
就好比 192.168.0.0 / 16 這一個子網路,他是常用在區域網路的位址分配上,畢竟位址有限,你可能也只需要一台裝置對外對內處理網際網路流量就好。
所以下次別人拿這個網段的 IP 給你,除非你跟他在同一區域網路內,否則你是連不到的。嗆他
封包結構 Packet Structure
廢話不多說,直接上圖 。
- Version,佔 4 個位元,表示版本
- Protocol,你的資料是什麼協定
- TTL,你這個封包可以經過幾個路由,每次通過都會減 1,到 0 就棄包了。
- Source Address,來源位址,誰傳的
- Destination Address,目標位址,要寄到誰家
目前面臨的問題
想當然爾,世界上有這麼多個人, 2^32 個位址夠分嗎。
實際上在 2011 年 IANA 便將所有的 IPv4 位址分配完了,人類不得不解決這個問題,也就是導入最新的 IPv6 協定,這個協定有著多到和天上星星差不多數量的位址。
當然遷移沒有這麼簡單,到今天都還一堆人在用 IPv4,現階段除了 v6 這個選擇之外,你應該也要參考一下這一篇 NAT 簡介
AM
